/*
 给定一个射击比赛成绩单
 包含多个选手若干次射击的成绩分数
 请对每个选手按其最高三个分数之和进行降序排名
 输出降序排名后的选手id序列
 条件如下
   1. 一个选手可以有多个射击成绩的分数，且次序不固定
   2. 如果一个选手成绩少于3个，则认为选手的所有成绩无效，排名忽略该选手
   3. 如果选手的成绩之和相等，则相等的选手按照其id降序排列

  输入描述:
    输入第一行
        一个整数N
        表示该场比赛总共进行了N次射击
        产生N个成绩分数
        2<=N<=100

    输入第二行
      一个长度为N整数序列
      表示参与每次射击的选手id
      0<=id<=99

    输入第三行
       一个长度为N整数序列
       表示参与每次射击选手对应的成绩
       0<=成绩<=100

  输出描述:
     符合题设条件的降序排名后的选手ID序列

  示例一
     输入:
       13
       3,3,7,4,4,4,4,7,7,3,5,5,5
       53,80,68,24,39,76,66,16,100,55,53,80,55
     输出:
       5,3,7,4
     说明:
       该场射击比赛进行了13次
       参赛的选手为{3,4,5,7}
       3号选手成绩53,80,55 最高三个成绩的和为188
       4号选手成绩24,39,76,66  最高三个成绩的和为181
       5号选手成绩53,80,55  最高三个成绩的和为188
       7号选手成绩68,16,100  最高三个成绩的和为184
       比较各个选手最高3个成绩的和
       有3号=5号>7号>4号
       由于3号和5号成绩相等  且id 5>3
       所以输出5,3,7,4
  */
const test = (input) => {
    let arr = input.split('\n')

    //   比赛次数
    //   出场顺序
    //  成绩

    let [n, seq, scores] = arr

    console.log(n)
    console.log(seq)
    console.log(scores)

    let list = []

    let getShooter = (id) => {
        return list.find(t => t.id === id)
    }
    let seqArr = seq.split(",")
    let scoreArr = scores.split(",")

    seqArr.forEach((t, i) => {
        let shooter = getShooter(t)
        let score = scoreArr[i]
        if (shooter) {
            shooter.scores.push(score)
        } else {
            list.push({
                id: t,
                scores: [score]
            })
        }
    })
    let sortFn = (a, b, field, defaultValue) => {
        if (field) {
            if (a[field] > b[field]) {
                return -1
            }
            else if (a[field] < b[field]) {
                return 1
            }
            else {
                return defaultValue || 0
            }
        } else {
            if (a > b) {
                return -1
            }
            else if (a < b) {
                return 1
            }
            else { return 0 }
        }

    }

    let result = list.map(t => {
        let scores = t.scores.map(t => parseInt(t)).sort((a, b) => sortFn(a, b)).slice(0, 3)
        let sum = scores.reduce((a, b) => a + b, 0)
        return {
            id: t.id,
            scores,
            sum
        }
    }).sort((a, b) => sortFn(a, b, "sum", sortFn(a, b, "id")))
    console.log(result)
    console.log(result.map(t => t.id).join(","))

}

let input = `13
3,3,7,4,4,4,4,7,7,3,5,5,5
53,80,68,24,39,76,66,16,100,55,53,80,55`

test(input)